#include "BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.h"
#ifdef __cplusplus
extern "C" {
#endif
btSequentialImpulseConstraintSolverMt::btContactManifoldCachedInfo* bullet_NewbtSequentialImpulseConstraintSolverMtbtContactManifoldCachedInfo(){
	btSequentialImpulseConstraintSolverMt::btContactManifoldCachedInfo* wrap_out = new btSequentialImpulseConstraintSolverMt::btContactManifoldCachedInfo();
	return wrap_out;
}

bool** bullet_btSequentialImpulseConstraintSolverMtbtContactManifoldCachedInfo_GetFieldOfContactHasRollingFriction(btSequentialImpulseConstraintSolverMt::btContactManifoldCachedInfo* c_this){
	return (bool**)(&c_this->contactHasRollingFriction);
}

int bullet_btSequentialImpulseConstraintSolverMtbtContactManifoldCachedInfo_GetFieldOfContactIndex(btSequentialImpulseConstraintSolverMt::btContactManifoldCachedInfo* c_this){
	return (int)(c_this->contactIndex);
}

btManifoldPoint*** bullet_btSequentialImpulseConstraintSolverMtbtContactManifoldCachedInfo_GetFieldOfContactPoints(btSequentialImpulseConstraintSolverMt::btContactManifoldCachedInfo* c_this){
	return (btManifoldPoint***)(&c_this->contactPoints);
}

int bullet_btSequentialImpulseConstraintSolverMtbtContactManifoldCachedInfo_GetFieldOfMAX_NUM_CONTACT_POINTS(btSequentialImpulseConstraintSolverMt::btContactManifoldCachedInfo* c_this){
	return (int)(c_this->MAX_NUM_CONTACT_POINTS);
}

int bullet_btSequentialImpulseConstraintSolverMtbtContactManifoldCachedInfo_GetFieldOfNumTouchingContacts(btSequentialImpulseConstraintSolverMt::btContactManifoldCachedInfo* c_this){
	return (int)(c_this->numTouchingContacts);
}

int bullet_btSequentialImpulseConstraintSolverMtbtContactManifoldCachedInfo_GetFieldOfRollingFrictionIndex(btSequentialImpulseConstraintSolverMt::btContactManifoldCachedInfo* c_this){
	return (int)(c_this->rollingFrictionIndex);
}

int** bullet_btSequentialImpulseConstraintSolverMtbtContactManifoldCachedInfo_GetFieldOfSolverBodyIds(btSequentialImpulseConstraintSolverMt::btContactManifoldCachedInfo* c_this){
	return (int**)(&c_this->solverBodyIds);
}

btSequentialImpulseConstraintSolverMt::JointParams* bullet_NewbtSequentialImpulseConstraintSolverMtJointParams(){
	btSequentialImpulseConstraintSolverMt::JointParams* wrap_out = new btSequentialImpulseConstraintSolverMt::JointParams();
	return wrap_out;
}

int bullet_btSequentialImpulseConstraintSolverMtJointParams_GetFieldOfM_solverBodyA(btSequentialImpulseConstraintSolverMt::JointParams* c_this){
	return (int)(c_this->m_solverBodyA);
}

int bullet_btSequentialImpulseConstraintSolverMtJointParams_GetFieldOfM_solverBodyB(btSequentialImpulseConstraintSolverMt::JointParams* c_this){
	return (int)(c_this->m_solverBodyB);
}

int bullet_btSequentialImpulseConstraintSolverMtJointParams_GetFieldOfM_solverConstraint(btSequentialImpulseConstraintSolverMt::JointParams* c_this){
	return (int)(c_this->m_solverConstraint);
}

btSequentialImpulseConstraintSolverMt* bullet_NewbtSequentialImpulseConstraintSolverMt(){
	btSequentialImpulseConstraintSolverMt* wrap_out = new btSequentialImpulseConstraintSolverMt();
	return wrap_out;
}

bool bullet_btSequentialImpulseConstraintSolverMt_GetFieldOfS_allowNestedParallelForLoops(btSequentialImpulseConstraintSolverMt* c_this){
	return (bool)(c_this->s_allowNestedParallelForLoops);
}

btBatchedConstraints::BatchingMethod bullet_btSequentialImpulseConstraintSolverMt_GetFieldOfS_contactBatchingMethod(btSequentialImpulseConstraintSolverMt* c_this){
	return (btBatchedConstraints::BatchingMethod)(c_this->s_contactBatchingMethod);
}

btBatchedConstraints::BatchingMethod bullet_btSequentialImpulseConstraintSolverMt_GetFieldOfS_jointBatchingMethod(btSequentialImpulseConstraintSolverMt* c_this){
	return (btBatchedConstraints::BatchingMethod)(c_this->s_jointBatchingMethod);
}

int bullet_btSequentialImpulseConstraintSolverMt_GetFieldOfS_maxBatchSize(btSequentialImpulseConstraintSolverMt* c_this){
	return (int)(c_this->s_maxBatchSize);
}

int bullet_btSequentialImpulseConstraintSolverMt_GetFieldOfS_minBatchSize(btSequentialImpulseConstraintSolverMt* c_this){
	return (int)(c_this->s_minBatchSize);
}

int bullet_btSequentialImpulseConstraintSolverMt_GetFieldOfS_minimumContactManifoldsForBatching(btSequentialImpulseConstraintSolverMt* c_this){
	return (int)(c_this->s_minimumContactManifoldsForBatching);
}

void bullet_btSequentialImpulseConstraintSolverMt_internalAllocContactConstraints(btSequentialImpulseConstraintSolverMt* c_this,btSequentialImpulseConstraintSolverMt::btContactManifoldCachedInfo* cachedInfoArray,int numManifolds){
	btSequentialImpulseConstraintSolverMt::btContactManifoldCachedInfo const * c_arg_cachedInfoArray=(btSequentialImpulseConstraintSolverMt::btContactManifoldCachedInfo const *)(void*)(cachedInfoArray);
	int c_arg_numManifolds=numManifolds;
	c_this->internalAllocContactConstraints(c_arg_cachedInfoArray,c_arg_numManifolds);
}

void bullet_btSequentialImpulseConstraintSolverMt_internalCollectContactManifoldCachedInfo(btSequentialImpulseConstraintSolverMt* c_this,btSequentialImpulseConstraintSolverMt::btContactManifoldCachedInfo* cachedInfoArray,btPersistentManifold** manifoldPtr,int numManifolds,btContactSolverInfo* infoGlobal){
	btSequentialImpulseConstraintSolverMt::btContactManifoldCachedInfo * c_arg_cachedInfoArray=(btSequentialImpulseConstraintSolverMt::btContactManifoldCachedInfo *)(void*)(cachedInfoArray);
	btPersistentManifold * * c_arg_manifoldPtr=(btPersistentManifold * *)(void*)(manifoldPtr);
	int c_arg_numManifolds=numManifolds;
	btContactSolverInfo const& c_arg_infoGlobal=(btContactSolverInfo const&)(*infoGlobal);
	c_this->internalCollectContactManifoldCachedInfo(c_arg_cachedInfoArray,c_arg_manifoldPtr,c_arg_numManifolds,c_arg_infoGlobal);
}

void bullet_btSequentialImpulseConstraintSolverMt_internalConvertBodies(btSequentialImpulseConstraintSolverMt* c_this,btCollisionObject** bodies,int iBegin,int iEnd,btContactSolverInfo* infoGlobal){
	btCollisionObject * * c_arg_bodies=(btCollisionObject * *)(void*)(bodies);
	int c_arg_iBegin=iBegin;
	int c_arg_iEnd=iEnd;
	btContactSolverInfo const& c_arg_infoGlobal=(btContactSolverInfo const&)(*infoGlobal);
	c_this->internalConvertBodies(c_arg_bodies,c_arg_iBegin,c_arg_iEnd,c_arg_infoGlobal);
}

void bullet_btSequentialImpulseConstraintSolverMt_internalInitMultipleJoints(btSequentialImpulseConstraintSolverMt* c_this,btTypedConstraint** constraints,int iBegin,int iEnd){
	btTypedConstraint * * c_arg_constraints=(btTypedConstraint * *)(void*)(constraints);
	int c_arg_iBegin=iBegin;
	int c_arg_iEnd=iEnd;
	c_this->internalInitMultipleJoints(c_arg_constraints,c_arg_iBegin,c_arg_iEnd);
}

void bullet_btSequentialImpulseConstraintSolverMt_internalSetupContactConstraints(btSequentialImpulseConstraintSolverMt* c_this,int iContactConstraint,btContactSolverInfo* infoGlobal){
	int c_arg_iContactConstraint=iContactConstraint;
	btContactSolverInfo const& c_arg_infoGlobal=(btContactSolverInfo const&)(*infoGlobal);
	c_this->internalSetupContactConstraints(c_arg_iContactConstraint,c_arg_infoGlobal);
}

void bullet_btSequentialImpulseConstraintSolverMt_internalWriteBackBodies(btSequentialImpulseConstraintSolverMt* c_this,int iBegin,int iEnd,btContactSolverInfo* infoGlobal){
	int c_arg_iBegin=iBegin;
	int c_arg_iEnd=iEnd;
	btContactSolverInfo const& c_arg_infoGlobal=(btContactSolverInfo const&)(*infoGlobal);
	c_this->internalWriteBackBodies(c_arg_iBegin,c_arg_iEnd,c_arg_infoGlobal);
}

void bullet_btSequentialImpulseConstraintSolverMt_internalWriteBackContacts(btSequentialImpulseConstraintSolverMt* c_this,int iBegin,int iEnd,btContactSolverInfo* infoGlobal){
	int c_arg_iBegin=iBegin;
	int c_arg_iEnd=iEnd;
	btContactSolverInfo const& c_arg_infoGlobal=(btContactSolverInfo const&)(*infoGlobal);
	c_this->internalWriteBackContacts(c_arg_iBegin,c_arg_iEnd,c_arg_infoGlobal);
}

void bullet_btSequentialImpulseConstraintSolverMt_internalWriteBackJoints(btSequentialImpulseConstraintSolverMt* c_this,int iBegin,int iEnd,btContactSolverInfo* infoGlobal){
	int c_arg_iBegin=iBegin;
	int c_arg_iEnd=iEnd;
	btContactSolverInfo const& c_arg_infoGlobal=(btContactSolverInfo const&)(*infoGlobal);
	c_this->internalWriteBackJoints(c_arg_iBegin,c_arg_iEnd,c_arg_infoGlobal);
}

#ifdef __cplusplus
}
#endif
